/////////////////////////////////////////////////////////////////////
//
//  MOE Framework (Meta Object Encapsulation Framework)
//
//  Original Author: Wiksy Wang, 2011
//
/////////////////////////////////////////////////////////////////////

#ifndef MOE_PERSIST_DEFAULT_NAMESPACE_TREE_FORMAT_HPP
#define MOE_PERSIST_DEFAULT_NAMESPACE_TREE_FORMAT_HPP

namespace MOE
{

namespace Persist
{

template <class TreeType>
class DefaultNamespaceTreeFormat
{
public:
	static const typename TreeType::data_type& NamespaceField()
	{
		static const char stringData[] = "namespace";
		static const typename TreeType::data_type str(stringData, stringData + sizeof(stringData) / sizeof(char) - 1);
		return str;
	}

	static const typename TreeType::data_type& ObjectListField()
	{
		static const char stringData[] = "object_list";
		static const typename TreeType::data_type str(stringData, stringData + sizeof(stringData) / sizeof(char) - 1);
		return str;
	}

	static const typename TreeType::data_type& ObjectField()
	{
		static const char stringData[] = "object";
		static const typename TreeType::data_type str(stringData, stringData + sizeof(stringData) / sizeof(char) - 1);
		return str;
	}

	static const typename TreeType::data_type& ObjectNameField()
	{
		static const char stringData[] = "name";
		static const typename TreeType::data_type str(stringData, stringData + sizeof(stringData) / sizeof(char) - 1);
		return str;
	}

	static const typename TreeType::data_type& ObjectTypeField()
	{
		static const char stringData[] = "type";
		static const typename TreeType::data_type str(stringData, stringData + sizeof(stringData) / sizeof(char) - 1);
		return str;
	}

	static const typename TreeType::data_type& ObjectValueField()
	{
		static const char stringData[] = "value";
		static const typename TreeType::data_type str(stringData, stringData + sizeof(stringData) / sizeof(char) - 1);
		return str;
	}
};

}

}

#endif
